package analyse;

import java.math.*;

/**
 * @author baigal
 * Diese Anforderungen sollten von Ihrer Applikation am Ende des Semesters nach Möglichkeit erfüllt werden.
	-- Durchschnittliche tägliche Renditen
	-- Volatilität
	-- Beta-Faktor (relativ zu einem Index, zb. ATX, DAX, S&P500, ...)
	-- Korrelationen innerhalb des Portfolios (Covarianz-Matrix)
	-- Verteilungstest (Normalverteilung) bzw. Vergleich der tatsächlichen Verteilung mit Normalverteilung: a) in Zahlen (Schiefe, Kurtosis) b) graphisch

	Vorgehensweise:
	----------------------------------
	1. Berechnet  die  logarithmischen  täglichen  Renditen  für  die  Aktien  und  dem	Marktindex. (Berechnet die durchschnittliche tägliche Rendite)
	2. Erstellt ein Histogramm der täglichen Renditen von Punkt (1)
	3. Schätzt die Volatilität der täglichen Renditen  mit Hilfe der Standardabweichung	und der Varianz.
	4. Erstellt  Sie  Diagramme,  die die  Renditen  der  einzelnen  Aktien  im  Vergleich  zu der Rendite des Marktindex darstellen.
	5. Schätzt  die  Beta-Koeffizienten  für  die  Aktien.  Der  Beta-Koeffizient  ist  die Kovarianz zwischen den täglichen Renditen der Aktie und den täglichen Renditen 
		des Marktindex (Funktion COVAR(array1,array2) ) in Excel.
	*/

public class BerechnungKlasse {
	
	private double mRendite[];
	private double mSum_Rendite;
	private double mMittelwert;
	
	private double mStandartabweichung;
	private double mAnz_Tag;
	private double mVarianz;
	
	public BerechnungKlasse(double mStandartabweichung, double mRendite[], double mSum_Rendite, 
			int mAnz_Rendite, double mAnz_Tag, double mMittelwert, double mVolatilitaet, double varianz) {
		
		super();
		this.mStandartabweichung = mStandartabweichung;
		this.mRendite = mRendite;
		this.mSum_Rendite = mSum_Rendite;		
		this.mAnz_Tag = mAnz_Tag;
		this.mMittelwert = mMittelwert;
		this.mVarianz = varianz;
	}
		
	//die taegliche Renditen bereits in Calc berechnet. 
	//Nachfolgend wird der arithmetische Durchschnitt (Mittelwert) μ 
	//der vorliegenden logarithmierten Tages- (Monats-, Jahres-)renditen ausgerechnet 
	
	public double berechneMittelwert() {
		mMittelwert = (Double) null;
		
		for (int n = 0; n < mRendite.length; ++n) {			
			mSum_Rendite += mRendite[n];
		}
		
		mMittelwert = mSum_Rendite/mRendite.length;		
		return mMittelwert;		
	}
	
//			/**Berechnung der Varianz σ2 ist
//			 * definiert als die Summe aus den 
//			 * ins Quadrat erhobenen Abweichungen der Einzelausprägungen vom Mittelwert 
//			 * geteilt durch die Zahl der Einzelausprägungen. 
//			 * Zur Ausmittlung der Varianz einer Grundgesamtheit von Werten 
//			 * bedient man sich allgemein der folgenden Forme σ^2 = ( [Σ (rt – μ)^2]
//			 **/
//			
//			varianz^2 =( (mRendite - mMittelwert)/mAnz_Tag);
//			
//			//sigma=wurzel aus varianz
//			//Standardabweichung σ
//			
//			mStandartabweichung = sqrt(varianz);
//			
//			/**
//			 * Als allgemeine Formel für die annualisierte Standardabweichung (= Volatilität) 
//			 * erhält man somit: σ(ann) = σ · √n
//			 * annualierte Standartabweichung = StdAbweichung * Wurzel aus (Monate)  
//			 **/
//			
//			mVolatilitaet = mStandartabweichung * sqrt(mAnz_Tag);
	
	public double stdAbweichung() {		
		return mStandartabweichung;		
	}
}
